iT邦幫忙

2021 iThome 鐵人賽

DAY 19
0
Mobile Development

android studio 30天初學筆記系列 第 19

Android Studio初學筆記-Day19-SharedPreferences

  • 分享至 

  • xImage
  •  

SharedPreferences

SharedPreferences可以做到儲存簡單資料的功能,簡單的應用像儲存登入帳號的資料或者其他需要儲存少量的資料的時候可以派上用場,如果資料量大的話就不建議使用了,今天就來講講它是怎麼儲存資料的。

  • 首先SharedPreferences的用法如下
    宣告SharedPreferences變數並透過getSharedPreferences(String name, int mode)指向name的檔案,若無則創建一個檔案,以及設定mode權限可以輸入0、1、2、4去取得相對應的權限或者輸入的MODE去找尋需要的權限,比較建議使用後者必較不會有使用錯的問題,接者可以透過edit()對資料編輯新增,和bundle的新增方法相似,可以依類型(String、Int等)新增資料,接者看以下範例示範來更清楚我所說的用法吧。在佈局上我設計一個登入頁面如下

activity_main.xml介面

https://ithelp.ithome.com.tw/upload/images/20210908/20139136VycdnzPEuO.png

MainActivity程式碼

public class MainActivity extends AppCompatActivity {
    SharedPreferences pref;
    EditText account,password;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        account = (EditText) findViewById(R.id.account);
        password = (EditText) findViewById(R.id.password);
    }
    //新增儲存資料
    public void sava(View v){
        pref = getSharedPreferences("DATA",MODE_PRIVATE);
        pref.edit()
            .putString("NAME",account.getText().toString())
            .putString("PHONE",password.getText().toString())
            .apply();                   //或commit()
    }
    //讀取資料
    public void read(View v){
        pref = getSharedPreferences("DATA",MODE_PRIVATE);
        account.setText(pref.getString("NAME",""));
        password.setText(pref.getString("PHONE",""));
    }
    //清除EditTexts內容
    public void clear(View v){
        pref = getSharedPreferences("DATA",MODE_PRIVATE);
        account.setText("");
        password.setText("");
        //下面程式碼能清除所有資料
        /*SharedPreferences.Editor editor = pref.edit();
        editor.clear();
        editor.commit();*/

    }
}

可以看到在新增SharedPreferences資料最後有用到commit(),這裡也可以使用apply(),主要差別在:

  • commit():直接將修改結果寫入檔案。
  • apply():修改記憶體中的暫存資料,並以非同步式寫入檔案。

而取得資料的方法也大同小異,一樣透過變數宣告並在getSharedPreferences(String name, int mode)輸入相同的檔名取得剛新增的檔案,接者依要取出的資料型態get資料。最後展示出類似登入時記住帳密的效果。
https://ithelp.ithome.com.tw/upload/images/20210908/20139136tK0hNkQcRc.png
今天的SharedPreferences就講到這邊,謝謝大家~/images/emoticon/emoticon41.gif


上一篇
Android Studio初學筆記-Day18-Intent+Bundle
下一篇
Android Studio初學筆記-Day20-AlertDialog(1)
系列文
android studio 30天初學筆記30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言